package cn.iocoder.yudao.module.system.service.erp.warehouseinventorysku;
import java.util.*;

import cn.iocoder.yudao.module.system.controller.admin.erp.warehouseinventorysku.vo.WarehouseInventorySkuPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.erp.warehouseinventorysku.vo.WarehouseInventorySkuSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.erp.warehouseinventorysku.WarehouseInventorySkuDO;
import jakarta.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 仓库库存sku Service 接口
 *
 * @author 芋道源码
 */
public interface WarehouseInventorySkuService {

    /**
     * 创建仓库库存sku
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createWarehouseInventorySku(@Valid WarehouseInventorySkuSaveReqVO createReqVO);

    /**
     * 更新仓库库存sku
     *
     * @param updateReqVO 更新信息
     */
    void updateWarehouseInventorySku(@Valid WarehouseInventorySkuSaveReqVO updateReqVO);

    /**
     * 删除仓库库存sku
     *
     * @param id 编号
     */
    void deleteWarehouseInventorySku(Long id);

    /**
     * 获得仓库库存sku
     *
     * @param id 编号
     * @return 仓库库存sku
     */
    WarehouseInventorySkuDO getWarehouseInventorySku(Long id);

    /**
     * 获得仓库库存sku分页
     *
     * @param pageReqVO 分页查询
     * @return 仓库库存sku分页
     */
    PageResult<WarehouseInventorySkuDO> getWarehouseInventorySkuPage(WarehouseInventorySkuPageReqVO pageReqVO);

    /**
     * 获得仓库库存sku分页
     *
     * @param warehouseId 仓库id
     * @param customerId 客户id
     * @return 仓库库存sku分页
     */
    List<WarehouseInventorySkuDO> getWarehouseInventorySkuList(Long warehouseId, Long customerId);
    /**
     * 获得仓库库存sku分页
     *
     * @param warehouseId 仓库id
     * @param customerId 客户id
     * @param sku  sku
     * @return 仓库库存sku分页
     */
    WarehouseInventorySkuDO getWarehouseInventorySku(Long warehouseId, Long customerId, String sku);


}